/**
  需求：防止按钮在短时间内被多次点击，使用防抖函数限制规定时间内只能点击一次。

  思路：
    定义一个延迟执行的方法，如果在延迟时间内再调用该方法，则重新计算执行时间。
    将事件绑定在 click 方法上。
 */
import { ObjectDirective } from 'vue';

const debounce: ObjectDirective<any, Function> = {
  created(el, binding) {
    el.debounce_timer = null;
    el.addEventListener('click', (e: any) => {
      if (el.debounce_timer) {
        clearTimeout(el.debounce_timer);
      }
      el.debounce_timer = setTimeout(() => {
        binding.value(e);
      }, 1000);
    })
  }
}

export default debounce;